rem =======================================================================================================
rem  1. 复制以下内容, 使用记事本新建一个.bat为后缀的批处理脚本, 然后双击该脚本开始收集
rem  2. 如果未将 edith.exe 所在路径加入系统 Path， 请确保 edith.exe 在当前路径下或手动替换为绝对路径
rem  3. 勿以 “edith oracle get-cmd --oraclehome xxx --gridhome yyy | cmd” 方式执行！
rem =======================================================================================================

@echo off & setlocal enabledelayedexpansion
cmd /C sc query | findstr OracleService | findstr SERVICE_NAME | findstr /v ASM | findstr -v MGMTDB | findstr -v APX >instlist.log
for /f "delims=: tokens=2" %%i in (.\instlist.log) do (
set "str=%%i"
set "SID=!str:~14,9!"
SET ORACLE_SID=!
@echo off
setlocal

REM 获取当前目录路径
set "current_dir=%cd%"

REM 获取上级目录的路径
for %%A in ("%current_dir%\..") do set "parent_dir=%%~fA"

REM 判断上级目录的同级目录 report_oracle 是否存在
if not exist "%parent_dir%\report_oracle" (
    REM 创建 report_oracle 目录
    mkdir "%parent_dir%\report_oracle"
    echo report_oracle 目录已创建。
) else (
    echo report_oracle 目录已存在。
)

endlocal

edith.exe oracle get-conf --sid !SID! -f json -t conf -o %parent_dir%\report_oracle  --loglevel I --oraclehome "" --gridhome ""
edith.exe oracle get-status --sid !SID! -f json -t status -o %parent_dir%\report_oracle  --loglevel I --oraclehome "" --gridhome ""
edith.exe oracle get-log --sid !SID! -f json -t log -o %parent_dir%\report_oracle  --loglevel I --oraclehome "" --gridhome ""
)

edith.exe os get-conf -t base:disk:etchosts:mem:mount:ntpsync:sysctla:zone -o %parent_dir%\report_oracle  -f json --loglevel I
rem edith os get-log -o %parent_dir%\report_oracle  -f json --loglevel I
edith.exe os get-status -t cpupct:dfihP:ntpdstatus:psaux:psef -o %parent_dir%\report_oracle  -f json -c 5 --loglevel I
del .\instlist.log

rem =======================================================================================================